草庐IT

c - WaitForMultipleObjects 堆栈

全部标签

c++ - 默认堆栈大小

如何增加Code::Blocks中的堆栈大小?我读过this它说VS中的默认堆栈大小是1MB。现在就我而言,它与VS无关,堆栈大小取决于操作系统。在我的win10情况下是1MB。This以下内容似乎有点过时:project->buildoptions->linkersettings->otherlinkeroptionsdoesn'texistnomore.项目栏下没有构建。无论如何,我需要增加我的堆栈大小,以便我可以声明一个巨大的二维字符数组并从缓存中受益。像arr[1000][1000]。与char*arr[100]不同,它将位于连续内存中,后者将指向包含1000个字节的1000个

c - Windows是否回收堆栈空间?

我正在做一种叫做“堆叠绘画”的技术。确定特定函数使用了多少堆栈空间。如果我在堆栈上分配1MB的项目。然后确保我没有使用堆栈中的任何这些项目。Windows自动取消提交(释放)那些未使用的页面吗?我特别想知道Windows的VMM。关于页面是否提交或不一定提交但只是保留?换句话说,如果我手动访问1MB的内存,Windows可能会抛出访问冲突? 最佳答案 您不会删除在堆栈上分配的内容;它会自动回收,因为当您退出当前作用域时,堆栈指针会移回前一个堆栈帧1,因此当前作用域中用于对象的所有内存都被有效回收。原则上,所有堆栈都是在应用程序加载到

c# - 诊断已翻译 UWP 堆栈跟踪的步骤

所以我在Release模式下收到了来self的UWPWindows应用程序的堆栈跟踪。我现在已经使用windbg将所有地址翻译成它们的方法名称。我现在有这个输出:System.InvalidOperationException:InvalidOperation_EnumFailedVersion.Formoreinformation,visithttp://go.microsoft.com/fwlink/?LinkId=623485atMyApp!+0x7710b7-MyApp!System::Func$4.BeginInvoke+0x27|(00b710c0)MyApp!System

c++ - 在 Windows 中调试堆栈溢出?

所以我试图调试这个奇怪的问题,在这个问题中进程结束时没有调用一些析构函数...在VS(2005)调试器中,我点击“全部中断”并查看神秘消失进程的线程的调用堆栈,当我看到以下内容时:smellslikeSOhttp://img6.imageshack.us/img6/7628/95434880.jpg这看起来确实像是一个正在制作中的SO,这可以解释为什么该进程没有先打包它的手提箱就运行到它快乐的地方。问题是,VS调试器的调用堆栈只显示了您在图像中可以看到的内容。所以我的问题是:如何找到无限递归调用的开始位置?我读了somewhere在Linux中,您可以将回调附加到SIGSEGV处理程序

c++ - 如何使用 WaitForMultipleObjects 来平衡竞争工作?

我正在使用WaitForMultipleObjects在IPC情况下,我有一个进程将数据写入两个内存映射文件中的一个或两个,另一个进程在数据更新时获取该数据。当任一MMF中的数据发生更改时,我使用命名事件对象通知第二个进程。还有一个终止“观察者”线程的事件。所以代码的简化示例是这样的(编辑-请注意事件对象已创建为自动重置事件)unsignedintCMyClass::ThreadFunc(){//backgroundthreadHANDLEhEvent[3];//openeventsforupdates0and1andkillsignalhEvent[0]=::OpenEvent(SY

程序编译保护&堆栈溢出保护机制

目录一,前言二,堆栈溢出原理三,操作系统内置的安全机制四,参考一,前言缓冲区溢出(buffer-overflow)是一种非常普遍、同时非常危险的漏洞,在各种操作系统、应用软件中广泛存在。缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击,轻则可以导致程序失败、系统关机等,重则可以利用它执行非授权指令,甚至获取系统特权,从而进行其它的非法操作。缓冲区攻击有栈溢出、堆溢出、格式化字符串漏洞、整形变量溢出等。以堆栈溢出为代表的缓冲区溢出已成为最为普遍的安全漏洞。由此引发的安全问题比比皆是。为了尽可能避免缓冲区溢出漏洞被攻击者利用,现今的编译器设计者已经开始在编译器层面上对堆栈进行保护。二,堆栈溢出原理在

c++ - 堆栈独立的 c/c++ 蓝牙 api?

我想知道是否有适用于Windows(XP、Vista、7、x86和x64)的独立于堆栈的C/C++蓝牙API。我的目标是创建连接并通过蓝牙发送/接收一些时间关键数据。我的研究为我提供了以下选项,但对于这项任务而言存在劣势:Windows蓝牙套接字仅适用于微软蓝牙堆栈使用COM端口(CreateFile/ReadFile/...)比套接字选项慢,用户必须先连接到设备。使用依赖于堆栈的API这将需要检测使用的堆栈并为每个堆栈创建读/写函数。非常耗时,我不知道是否有可能支持所有堆栈编写KMDF驱动程序我考虑编写一个功能驱动程序来直接与应该独立于堆栈的蓝牙HCI驱动程序对话。这将非常耗时,因为

windows - 如何从小型转储中提取堆栈跟踪?

我有一大堆小型转储,这些小型转储是在应用程序运行期间通过MiniDumpWriteDump记录的。小型转储是在操作系统版本与我的开发机器不同的机器上创建的。现在我正在尝试编写一个程序,使用dbghelp.dll从小型转储中提取堆栈跟踪。我正在遍历MINIDUMP_MODULE_LIST并调用SymLoadModule64,但这无法从公共(public)符号服务器下载pdb(kernel32等)。如果我将“C:\Windows\System32”添加到符号路径,它会找到dll并下载符号,但当然它们与小型转储中的dll不匹配,因此结果无用。那么我该如何告诉dbghelp.dll下载并使用正

c++ - 如何在 Windows 中以编程方式从调用堆栈帧中读取函数参数?

我试图遍历调用堆栈帧并从中提取一些信息。我能够使用来自WinDBG的StackWalk64、SymGetSymFromAddr64和SymGetLineFromAddr64API提取文件名、行号和函数名。但是STACKFRAME64中的DWORD64Params[4]是StackWalk64的返回值,只支持回读4个64位来自帧的函数参数。更糟糕的是,在32位系统上,仅使用Params[4]的低32位,因此超过32位的单个参数需要两个或更多元素。typedefstruct_tagSTACKFRAME64{ADDRESS64AddrPC;ADDRESS64AddrReturn;ADDRES

windows - 如何在 Windows 中挂接 TCP 堆栈以嗅探和修改数据包?

我想为Windows编写数据包嗅探器和编辑器。我希望能够看到进入和离开我的系统的所有数据包的内容,并可能修改它们。任何语言都可以,但我希望它运行得足够快,不会给系统带来负担。我读过一些关于WinPcap的资料,但文档声称您不能使用WinPcap创建防火墙,因为它不能丢弃数据包。哪些工具可以帮助我编写此软件? 最佳答案 在那里,完成了:-)回到2000年,我的第一个Windows程序是filterhookdriver.我所做的是实现过​​滤器Hook驱动程序并编写一个用户空间应用程序,该应用程序准备了一个关于允许什么和禁止什么的过滤器